-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add chart's secondary y axis. #1073
Add chart's secondary y axis. #1073
Conversation
…oNitta/PhpSpreadsheet into feature/Add_Chart_SecondaryYAxis
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for this PR, this looks quite interesting, unfortunately it lack unit tests. Could you add functional tests to read and write secondary axis, you can find example in tests/PhpSpreadsheetTests/Functional
.
Also existing tests should be fixed.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. |
@@ -332,12 +347,37 @@ private function writePlotArea(XMLWriter $objWriter, \PhpOffice\PhpSpreadsheet\W | |||
$this->writeCategoryAxis($objWriter, $xAxisLabel, $id1, $id2, $catIsMultiLevelSeries, $yAxis); | |||
} | |||
|
|||
$this->writeValueAxis($objWriter, $yAxisLabel, $chartType, $id1, $id2, $valIsMultiLevelSeries, $xAxis, $majorGridlines, $minorGridlines); | |||
$this->writeValueAxis($objWriter, $yAxisLabel, $chartType, $id1, $id2, $valIsMultiLevelSeries, $xAxis, $majorGridlines, $minorGridlines, DataSeries::VALUE_AXIS_POSITION_LEFT); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's look good, but you have override writeValueAxis definition without set a default value for the last param ($axisPosition). So at line 345
if ($chartType === DataSeries::TYPE_BUBBLECHART) { $this->writeValueAxis($objWriter, $xAxisLabel, $chartType, $id1, $id2, $catIsMultiLevelSeries, $xAxis, $majorGridlines, $minorGridlines); // MISSING $axisPosition PARAM } else { $this->writeCategoryAxis($objWriter, $xAxisLabel, $id1, $id2, $catIsMultiLevelSeries, $yAxis); }
Stock charts currently ignore upDownBars tag and its subsidiary gapWidth, upBars, and downBars tags when reading, and hard-codes those tags on write. As a result, the sample reproductions of stock charts in the 32* series aren't faithful to the originals. This PR fixes samples 1, 2, and 5. Samples 3 and 4 are reproduced better, but they require currently unsupported secondary axes (issue PHPOffice#560, issue PHPOffice#1072, and PR PHPOffice#1073 were closed as stale; see also PHPOffice/PHPExcel#1037). I will start to look at those, but it could take a while, and I don't think there's a reason to delay this in the meantime. Charts which depended on the hard-coded values written by the Xlsx Chart writer will be slightly different as a result of this change. To restore the hard-coded behavior: ```php $plotArea->setGapWidth(300); $plotArea->setUseUpBars(true); $plotArea->setUseDownBars(true); ``` The new behavior is demonstrated in 33_Chart_create_stock. The old behavior is demonstrated (with the code above) in new 33_Chart_create_stock2.
Stock charts currently ignore upDownBars tag and its subsidiary gapWidth, upBars, and downBars tags when reading, and hard-codes those tags on write. As a result, the sample reproductions of stock charts in the 32* series aren't faithful to the originals. This PR fixes samples 1, 2, and 5. Samples 3 and 4 are reproduced better, but they require currently unsupported secondary axes (issue #560, issue #1072, and PR #1073 were closed as stale; see also PHPOffice/PHPExcel#1037). I will start to look at those, but it could take a while, and I don't think there's a reason to delay this in the meantime. Charts which depended on the hard-coded values written by the Xlsx Chart writer will be slightly different as a result of this change. To restore the hard-coded behavior: ```php $plotArea->setGapWidth(300); $plotArea->setUseUpBars(true); $plotArea->setUseDownBars(true); ``` The new behavior is demonstrated in 33_Chart_create_stock. The old behavior is demonstrated (with the code above) in new 33_Chart_create_stock2.
This is:
Checklist:
Why this change is needed?